package cn.iocoder.yudao.module.crossborder.order.service;

import cn.iocoder.yudao.module.crossborder.order.api.dto.OrderCreateReqDTO;
import cn.iocoder.yudao.module.crossborder.order.api.dto.OrderDTO;

import java.util.List;

/**
 * 订单管理 Service 接口
 *
 * @author LHL
 */
public interface OrderService {

    /**
     * 获得订单
     *
     * @param id 编号
     * @return 订单
     */
    OrderDTO getOrder(Long id);

    /**
     * 获得订单列表
     *
     * @param ids 编号列表
     * @return 订单列表
     */
    List<OrderDTO> getOrderList(List<Long> ids);

    /**
     * 创建订单
     *
     * @param createReq 创建请求
     * @return 编号
     */
    Long createOrder(OrderCreateReqDTO createReq);

    /**
     * 取消订单
     *
     * @param orderId 订单编号
     * @param reason 取消原因
     * @return 是否成功
     */
    Boolean cancelOrder(Long orderId, String reason);

    /**
     * 确认订单
     *
     * @param orderId 订单编号
     * @return 是否成功
     */
    Boolean confirmOrder(Long orderId);

    /**
     * 支付订单
     *
     * @param orderId 订单编号
     * @param paymentMethod 支付方式
     * @return 是否成功
     */
    Boolean payOrder(Long orderId, Integer paymentMethod);

    /**
     * 履约订单
     *
     * @param orderId 订单编号
     * @return 是否成功
     */
    Boolean fulfillOrder(Long orderId);

    /**
     * 完成订单
     *
     * @param orderId 订单编号
     * @return 是否成功
     */
    Boolean completeOrder(Long orderId);

}
